package in.view.holder; import android.net.Uri; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import in.data.annotation.CheckinAnnotation; import in.data.annotation.ImageAnnotation; import in.lib.Constants; import in.lib.manager.ImageOptionsManager; import in.lib.manager.SettingsManager; import in.lib.utils.BitUtils; import in.lib.utils.Views.InjectView; import in.lib.utils.Views.Injectable; import in.lib.view.AvatarImageView; import in.lib.view.LinkedTextView; import in.lib.view.TextChronometer; import in.model.Post; import in.rob.client.R; import in.view.holder.base.Holder; import lombok.Getter; @Injectable public class PostHolder extends Holder<Post> { @Getter @InjectView(R.id.avatar) protected AvatarImageView avatar; @Getter @InjectView(R.id.date) protected TextChronometer date; @Getter @InjectView(R.id.username_title) protected TextView usernameTitle; @Getter @InjectView(R.id.username_subtitle) protected TextView usernameSubtitle; @Getter @InjectView(R.id.post_text) protected LinkedTextView postText; @Getter @InjectView(R.id.conversation_indicator) protected View conversationIndicator; @Getter @InjectView(R.id.reposted_by) protected TextView repostedBy; @Getter @InjectView(R.id.crosspost) protected TextView crosspost; @Getter @InjectView(R.id.checkin) protected TextView checkin; @Getter @InjectView(R.id.options_container) protected View optionsContainer; @Getter @InjectView(R.id.reply) protected View reply; @Getter @InjectView(R.id.reply_all) protected View replyAll; @Getter @InjectView(R.id.repost) protected View repost; @Getter @InjectView(R.id.star) protected View star; @Getter @InjectView(R.id.share) protected View share; @Getter @InjectView(R.id.more) protected View more; @Getter @InjectView(R.id.media_container) protected View mediaContainer; @Getter @InjectView(R.id.media_image) protected ImageView mediaImage; @Getter @InjectView(R.id.media_progress) protected ProgressBar mediaProgress; public PostHolder(View view) { super(view); } @Override public void populate(Post model) { // reset repostedBy.setVisibility(View.GONE); crosspost.setVisibility(View.GONE); checkin.setVisibility(View.GONE); mediaContainer.setVisibility(View.GONE); optionsContainer.setVisibility(View.GONE); conversationIndicator.setVisibility(View.GONE); mediaImage.setImageBitmap(null); date.setTime(model.getDate()); if (model.getReplyCount() > 0 || !TextUtils.isEmpty(model.getReplyTo())) { conversationIndicator.setVisibility(View.VISIBLE); } if (model.isRepost()) { repostedBy.setText(String.format("%s %s %s", repostedBy.getResources().getString(R.string.reposted_by), model.getReposter().getFormattedMentionNameTitle(), model.getReposter().getFormattedMentionNameSubTitle())); repostedBy.setVisibility(View.VISIBLE); } if (model.getAnnotations() != null && model.getAnnotations().getCrossposts().size() > 0) { crosspost.setText(String.format("%s %s", repostedBy.getResources().getString(R.string.crosspost), Uri.parse(model.getAnnotations().getCrossposts().get(0).getCanonicalUrl()).getAuthority())); crosspost.setVisibility(View.VISIBLE); } if (model.getAnnotations() != null && model.getAnnotations().getLocations().size() > 0) { if (model.getAnnotations().getLocations().get(0) instanceof CheckinAnnotation) { CheckinAnnotation annotation = (CheckinAnnotation)model.getAnnotations().getLocations().get(0); checkin.setText("Check-in at " + annotation.getName() + (annotation.getAddress() == null ? "" : " " + annotation.getAddress())); checkin.setVisibility(View.VISIBLE); } } usernameTitle.setText(model.getPoster().getFormattedMentionNameTitle()); usernameSubtitle.setText(model.getPoster().getFormattedMentionNameSubTitle()); postText.setText(model.getPostText()); postText.setLinkMovementMethod(); avatar.setUser(model.getPoster()); ImageLoader.getInstance().cancelDisplayTask(mediaImage); boolean showImage = BitUtils.contains(SettingsManager.getInstance().getShowHideBit(), Constants.BIT_SHOWHIDE_INLINE_IMAGES); if (showImage && model.getAnnotations() != null && model.getAnnotations().getImages() != null && model.getAnnotations().getImages().size() > 0) { ImageAnnotation image = (ImageAnnotation)model.getAnnotations().getImages().get(0); ImageLoader.getInstance().displayImage(image.getPreviewUrl(), mediaImage, ImageOptionsManager.getInstance().getInlineMediaImageOptions()); mediaContainer.setVisibility(View.VISIBLE); } } }